File Upload Encoding
File upload (PUT) operations use multipart/form-data encoding.
Example
PUT /api/v1/files/cliScript/incremental HTTP/1.1 Host: 10.4.219.229 Authorization: Basic QWRtaW46QWRtaW4= Content-Length: 210 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="file"; filename="cli.txt" Content-Type: application/octet-stream show system version ------WebKitFormBoundary7MA4YWxkTrZu0gW--
Use the following code snippets to generate proper format.
cURL
curl -i -X PUT -F "file=@cli.txt" -H "Expect:" -u Admin:Admin \ http://10.4.219.229/api/v1/files/cliScript/incremental
Python
import requests
import base64
def send_cli(ip, username, password, cli_script):
url = 'http://' + ip + '/api/v1/files/cliScript/incremental'
cred = username + ':' + password
cred_encoded = base64.b64encode(cred.encode()).decode()
headers = {'Authorization': 'Basic ' + cred_encoded}
files = {'file': ('cli.txt', cli_script)}
response = requests.put(url, files=files, headers=headers)
return response.status_code, response.text
send_cli('10.4.219.229', 'Admin', 'Admin', 'show system version')
PowerShell
$cliData = "show system version"
$ip = "10.4.219.229"
$username = "Admin"
$password = "Admin"
$URL = "http://{0}/api/v1/files/cliScript/incremental" `
-f $ip
$authHash = [Convert]::ToBase64String( `
[Text.Encoding]::ASCII.GetBytes( `
("{0}:{1}" -f $username,$password)))
$boundary = [System.Guid]::NewGuid().ToString();
$LF = "`r`n";
$bodyLines = (
"--$boundary",
("Content-Disposition: form-data; name=`"file`";" + `
" filename=`"file.txt`""),
"Content-Type: application/octet-stream$LF",
$cliData,
"--$boundary--$LF"
) -join $LF
$response = Invoke-RestMethod -Uri $URL -Method Put `
-Headers @{Authorization=("Basic {0}" -f $authHash)} `
-ContentType "multipart/form-data; boundary=$boundary" `
-Body $bodyLines
$response | ConvertTo-Json
If you prefer to use a GUI tool, use the Postman (https://www.getpostman.com) application or Chrome extension and set it up as follows: